#pragma once
class CRepair
{
public:
	CRepair(void);
	~CRepair(void);

	CNodeTable* mnt;
	CNodeCluster* mnc;

	void Initialize(CNodeTable* dp);
	void SetNodeCluster(CNodeCluster* nc);
	void DoRepair(Chro* ch0);
	void DropNAdd(Chro* ch0);
	double GetPU(Chro* ch0);
	double GetPU2(Chro* ch0);
	

	void Pit(Chro* ch0);
	int GetDimGap(Chro* ch0, int dim);
	void GetBottom(Chro* ch0);
	int* pesudo_value;
	
	int nClass;

	////////// CP 
	int CP(Chro* ch0);
	void CPTest();
	int CycleDetecor(int* arr,int len);
	
	Chro data[MAXCLASS];

	//////////Y0811
	int Y0811(Chro *ch0);
	int Y0810(Chro *ch0);
	void YPTest();
	void FindYPItems();

	//////////NodeCluster
	bool ChangeCluster(Chro* ch0);
	bool ChangeClusterDynamic(Chro* ch0);
	bool ChangeClusterDynamic3(Chro* ch0);

	///////////// Lagrangian Relaxation

	int LRTest();
	int LR(Chro* ch0);
	int CP2(Chro* ch0);
	int LRvalue(Chro* ch0, int d1,int d2, int mu);
};

